// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef MEDIA_CAST_NET_MOCK_CAST_TRANSPORT_H_
#define MEDIA_CAST_NET_MOCK_CAST_TRANSPORT_H_

#include <stdint.h>

#include "media/cast/net/cast_transport.h"
#include "testing/gmock/include/gmock/gmock.h"

namespace media {
namespace cast {

    class MockCastTransport : public CastTransport {
    public:
        MockCastTransport();
        virtual ~MockCastTransport();

        MOCK_METHOD2(InsertFrame, void(uint32_t ssrc, const EncodedFrame& frame));
        MOCK_METHOD3(SendSenderReport,
            void(uint32_t ssrc,
                base::TimeTicks current_time,
                RtpTimeTicks current_time_as_rtp_timestamp));
        MOCK_METHOD2(CancelSendingFrames,
            void(uint32_t ssrc, const std::vector<FrameId>& frame_ids));
        MOCK_METHOD2(ResendFrameForKickstart, void(uint32_t ssrc, FrameId frame_id));
        MOCK_METHOD0(PacketReceiverForTesting, PacketReceiverCallback());
        MOCK_METHOD2(AddValidRtpReceiver,
            void(uint32_t rtp_sender_ssrc, uint32_t rtp_receiver_ssrc));
        MOCK_METHOD2(InitializeRtpReceiverRtcpBuilder,
            void(uint32_t rtp_receiver_ssrc, const RtcpTimeData& time_data));
        MOCK_METHOD2(AddCastFeedback,
            void(const RtcpCastMessage& cast_message,
                base::TimeDelta target_delay));
        MOCK_METHOD1(AddPli, void(const RtcpPliMessage& pli_message));
        MOCK_METHOD1(
            AddRtcpEvents,
            void(const ReceiverRtcpEventSubscriber::RtcpEvents& rtcp_events));
        MOCK_METHOD1(AddRtpReceiverReport,
            void(const RtcpReportBlock& rtp_report_block));
        MOCK_METHOD0(SendRtcpFromRtpReceiver, void());
        MOCK_METHOD1(SetOptions, void(const base::DictionaryValue& options));
    };

} // namespace cast
} // namespace media

#endif // MEDIA_CAST_NET_MOCK_CAST_TRANSPORT_H_
